package 基础篇;

import java.util.Arrays;

/**
 * @author LiuShanshan
 * @version V1.0
 * @Description
 */
public class 选择排序 {
    public static void main(String[] args) {
        int[] array = {4,1,7,2,9,6,12,10};
//        calculate(array);
        selection(array);
        for (int i : array) {
            System.out.println(i);
        }
    }

    static void calculate(int[] array){
        for(int i = 0; i<=array.length-1; i++){
            int j = i;
            for(int t = j+1; t<=array.length-1; t ++){
                if(array[t] < array[j]){
                    j = t;
                }
            }
            // 将j的数据和i的数据交换
            if(j != i){
                swap(array, i, j);
            }
        }
    }

    public static void selection(int[] a) {
        for (int i = 0; i < a.length - 1; i++) {
            // i 代表每轮选择最小元素要交换到的目标索引
            int s = i; // 代表最小元素的索引
            for (int j = s + 1; j < a.length; j++) {
                if (a[s] > a[j]) { // j 元素比 s 元素还要小, 更新 s
                    s = j;
                }
            }
            if (s != i) {
                swap(a, s, i);
            }
            System.out.println(Arrays.toString(a));
        }
    }

   static void swap(int[] array, int startIndex, int endIndex){
        int a = array[startIndex];
       array[startIndex] = array[endIndex];
       array[endIndex] = a;
   }


}
